package br.ufpb.di.ppgi.apresentacao.controllers;

import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.simtecnologia.access.controll.annotation.ControlledResource;
import br.com.simtecnologia.access.controll.role.Roles;
import br.ufpb.di.ppgi.negocio.ServiceLocator;
import br.ufpb.di.ppgi.negocio.iservicos.IAlunoService;
import br.ufpb.di.ppgi.negocio.modelo.aluno.Aluno;
import br.ufpb.di.ppgi.negocio.modelo.usuario.UsuarioSessionInfo;
import br.ufpb.di.ppgi.persistencia.pagination.ListaPaginada;

@Path("/admin/alunos/")
@ControlledResource
@Roles({"SECRETARIO"})
public class AlunoRestrictController extends AbstractController {
	
	private final IAlunoService servico;
	private final UsuarioSessionInfo usuarioInfo;
	

	public AlunoRestrictController(Result result, Validator validator,
			ServiceLocator services, UsuarioSessionInfo usuarioInfo) {
		super(result, validator, services);

		this.servico = services.forAluno();
		this.usuarioInfo = usuarioInfo;
	}
	
	@Get
	@Path("orientandos/")
	@Roles({"PROFESSOR"})
	public void orientandos(String keyword,Integer page) {
		page = page == null || page < 0 ? 1 : page;
		keyword  = keyword == null ? "" : keyword.trim();
		
		String base = "admin/alunos/orientandos/?"+(keyword.isEmpty() ? "key="+keyword+"&" : "")+"page=";
		ListaPaginada<Aluno> listaPaginada = servico.filtrarPaginandoMeusOrientando(usuarioInfo.getId(),keyword,page,base);
		if (listaPaginada.getQtdPaginas() < page) {
			page = listaPaginada.getQtdPaginas();
			listaPaginada = servico.filtrarPaginandoMeusOrientando(usuarioInfo.getId(),keyword,page,base);
		}
			
   		result.include("listaPaginada", listaPaginada.setMaximoDePaginas(5));
   		result.include("alunos", listaPaginada.getLista());

	}	
	
}